package main

import (
	"fmt"
)

// 预声明标识符 iota 用在常量声明中
const (
	c0 = iota
	c1 = iota
	c2 = iota
)

func main() {

	// 显式的完整声明
	//var varName dataType [= value]

	var a = "Hello World"
	b := a[0]
	//a[1] = 'a' 无法赋值

	println(a, b)

	d := "Hello, 世界！"
	for i := 0; i < len(d); i++ {
		fmt.Print(d[i], "\t") // 这里显示的是 ASCII 码
	}
	fmt.Println()

	for i, v := range d {
		fmt.Print(i, v, "\t")
	}

	// 切片
	var array = [...]int{0, 1, 2, 3, 4, 5, 6}
	a1 := array[0:4] // 左闭右开
	a2 := array[:4]  // 左闭右开
	a3 := array[2:]  // 左闭右开
	fmt.Printf("%v\n", a1)
	fmt.Printf("%v\n", a2)
	fmt.Printf("%v\n", a3)

	// 通过内置的 make 创建数组
	b1 := make([]int, 10)     // len=10, cap=10
	b2 := make([]int, 10, 15) // len=10, cap=15

	fmt.Printf("%v\n", b1)
	fmt.Printf("%v\n", b2)

	// 1.6.4 map
	ma := map[string]int{"a": 1, "b": 2}
	fmt.Println(ma["a"])
	fmt.Println(ma["b"])

}
